home *** CD-ROM | disk | FTP | other *** search
/ 17 Bit Software 2: Collection B / 17Bit_Collection_B.iso / files / 2260.dms / in.adf / qmj manual < prev    next >
Encoding:
Text File  |  1992-10-11  |  20.2 KB  |  461 lines

  1.  
  2.       *************************************************
  3.       *                                               *
  4.       *                                               *
  5.       *************  QMJ version 5.31a  ***************
  6.       *                                               *
  7.       *                                               *
  8.       *************************************************
  9.  
  10.  A Shareware program to display the Mandelbrot Set, Complex and
  11.  Quaternion Julia sets on the Amiga.   Written by Chris Baxter in
  12.  Hong Kong and Naples 1989-91.  All Rights Reserved.  Version 5.31a.
  13.  Written in C and compiled with the Lattice C compiler  version 5.05.
  14.  The program may only be distributed with this notice and may not be
  15.  published or sold without the author's prior consent.  Neither the
  16.  program nor the documentation may be altered in any way during its
  17.  distribution or use.  No fee may be taken for this program other than
  18.  a minimal copying and media charge.
  19.  
  20.  The images on the distribution disk were produced on a standard PAL A500
  21.  with 1 megabyte of memory.  The full version of this program requires
  22.  1 megabyte to run; a cutdown version for 512k machines is available from
  23.  the author, as is a large number of fractal images.
  24.  
  25. *************************************************************************
  26.    Based on ideas in these articles in 'Scientific American':-
  27.  
  28.    Aug. 1985   "Computer Recreations"  p8   by A.K.Dewdney
  29.    Nov. 1987   "Computer Recreations"  p118 by A.K.Dewdney
  30.    Feb. 1989   "Computer Recreations"  p88  by A.K.Dewdney
  31.  
  32.    and this one in 'Fractal Report':-
  33.  
  34.    Issue 3 1989 "Quaternion Julia Sets" p2  by Dr Ian Entwhistle
  35.  
  36.  
  37.    The Mathematical Theory
  38.    =======================
  39.    
  40.    The Mandelbrot Set and Julia Sets are drawn by their coordinates in the
  41.    Gaussian plane.  The sets themselves appear in classical black in this
  42.    program; it is the boundaries approaching the sets which are coloured
  43.    and which provide the eye-catching image.  Membership of the sets is a
  44.    function of two variables:
  45.  
  46.    F(z,c):  z -> z^2 + c
  47.  
  48.    where z and c are both complex numbers consisting of both a real and
  49.    an imaginary part; the function is plotted by these two components, the
  50.    imaginary axis being vertical (y) and the real one horizontal (x).
  51.    The same function is used for both the Mandelbrot & Julia sets.
  52.  
  53.    The Mandelbrot Set is generated by setting z to zero initially and
  54.    varying the value of c, therefore the points on the plane relate to the
  55.    real & imaginary components of c.  The Julia sets arise from fixing c
  56.    and varying the value of z, so that the plotted points relate to the
  57.    real and imaginary parts of the value of z.
  58.    
  59.    The Quaternion Julia set images are 2D slices through the 4D sets.  The
  60.    function that describes them is:
  61.    
  62.       F(Q,q):  Q -> Q^2 +q
  63.    
  64.    Each of Q and q consist of a real part and components on the i, j and k
  65.    axes of the 4D space.  According to Hamiltonian algebra Q may be squared
  66.    as follows:
  67.    since Q = a+bi+cj+dk
  68.    therefore   Q^2 = (a+bi+cj+dk)(a+bi+cj+dk)
  69.           = a^2+abi+acj+adk+bia+(bi)^2+bicj+bidk+cja+(cj)^2+
  70.          cjdk+dka+dkbi+dkcj+(dk)^2
  71.    but      ij=ik=jk=ki=kj=0     (scalar multiplication)
  72.    therefore   Q^2 = a^2+2abi+2acj+2adk+(bi)^2+(cj)^2+(dk)^2
  73.    but      i^2 = j^2=k^2=-1
  74.    therefore   Q^2 = a^2-b^2-c^2-d^2+2abi+2acj+2adk
  75.    Separating Q^2+q into real and imaginary components gives:
  76.  
  77.    1. Qreal = a^2-b^2-c^2-d^2+qa
  78.    2. Qimag.i=2ab+qb
  79.    3. Qimag.j=2ac+qc
  80.    4. Qimag.k=2ad+qd
  81.  
  82.    For a 2D image the program can only use two planes to provide the
  83.    screen mapping; in this program those corresponding to equations 1
  84.    and 3 are used.
  85.    
  86.    It has been shown that if the size of either function ever reaches 2
  87.    then it will continue towards infinity and the initial values used
  88.    (depending on the type of set) do not lie within one of the sets.  The
  89.    colours of the images reflect the degree of boundedness that point has.
  90.  
  91.    To determine membership of the sets thousands of iterations might be
  92.    required; the maximum iteration in this program (which means membership
  93.    of the sets, if the size is still less than 2) may be varied to suit
  94.    real time constraints - Dewdney reports that 100 may often be adequate.
  95.    However, in practice it may be useful to preview an image using a low
  96.    maximum iteration and small image size; if all is well reset the
  97.    parameters and generate a larger image.  Of course, closer to the sets
  98.    the number of iterations required increases, so that images of these
  99.    regions are slower to produce.  On first loading an ffp produced image
  100.    will be flagged as such to the user; an 'ieee' flag in the title bar
  101.    tells you that the image was created in double precision maths.  (Such
  102.    flagging subsequently changes to suit the program actually being run.)
  103.    
  104.  
  105.    Please Note
  106.    -----------
  107.    The fast floating point maths option of the program seems accurate
  108.    enough when working to about 6 or 7 significant figures; beyond these
  109.    limits use the standard double precision maths.  Generating these
  110.    images is heavy on floating point maths, so many of them can take some
  111.    time to finish.
  112.  
  113.    With version 5.31 of this program you can:-
  114.  
  115. **      generate images of the Mandelbrot Set
  116. **      generate images of the Julia Sets
  117. **      generate images of Quaternion Julia slices
  118. **      specify with the mouse which part of an image to enlarge
  119. **      save an image  (compressed or uncompressed ILBM)
  120. **      reload an image  (compressed/uncompressed ILBM format)
  121. **      continue a saved, but unfinished, image
  122. **      edit the colours used for drawing
  123. **      load only the palette from another image
  124. **      control the complete mathematical process
  125. **      choose the method for colouring the image
  126. **      send the image to the printer
  127. ** choose IEEE or FFP maths
  128. ** choose low or medium resolution modes
  129.  
  130.  
  131. History
  132. -------
  133.  
  134. In version 5.0 several bugs were fixed and improvements made over v4.0 and
  135. earlier versions:-
  136.  
  137.    QMJ project icon startup was included
  138.    saving now also saved an accompanying image icon
  139.    the framing procedure was improved
  140.    palette editing was enhanced
  141.    the parameter screen was speeded up
  142.    QMJ now ran as a background process linked with cback.o
  143.  
  144. 5.10  Provided a choice of IEEE or FFP maths.  The former are high
  145.    precision routines that will use a maths coprocessor if it is
  146.    present; the latter use the Motorola Fast Floating Point
  147.    routines which are faster, but less accurate.  An IEEE double is
  148.    held in 64 bits; an FFP in only 32, so it clearly holds less
  149.    information.  The colour editing option was made to work during
  150.    PAUSE.   Loading a palette didn't blank the screen anymore.
  151.  
  152. 5.20  used the MicroSmiths' file requester and returned colour editing
  153.    to a draggable window, which is where it belongs.
  154.  
  155. 5.30  prototyping & registerised parameters to speed things up.  A new
  156.    LowRes quick drawing mode.
  157.  
  158. 5.31  Intro screen added.  Help beefed up. Parameters speeded up.  Fuller
  159.    keyboard command support added.
  160.    
  161. 5.31a uses a new file requester. Workbench 2 compatible.
  162.  
  163. ** All versions PAL/NTSC compatible.  When the program is run it
  164.    detects the host video format and adapts itself to PAL or NTSC
  165.    screen dimensions. The images supplied on the distribution disk are
  166.    PAL and may require a full PAL screen (except the NTSC default
  167.    image).  If you've got an NTSC Amiga they either won't fit or
  168.    they'll be distorted.  Sorry about that.
  169.  
  170. ***************************************************************************
  171.  
  172.    v5.31a   Copyright  (c) Chris Baxter   October 1992
  173.  
  174.             20 The Ridgeway
  175.             Droitwich
  176.             Worcs. WR9 8QB
  177.             England
  178.  
  179.    The program & notes updated in Bilbao, Spain September 1992.
  180.    You can contact me there until July 1994 at this address:
  181.    
  182.             calle Trauco 1, 3° izq
  183.             48007 Bilbao
  184.             España
  185.  
  186. **************************************************************************
  187.  
  188. Disclaimer
  189. ==========
  190.  
  191. This program is shareware and it may not be sold or distributed without
  192. its copyright notices.  However, you use the code entirely at your own risk.
  193. No warranties are expressed or implied as to its fitness for any purpose.
  194.  
  195. If you like the program and keep it, please send me US $10 (or equivalent),
  196. this will make you a registered user to whom the source code can be made
  197. available.  Alternatively, send me some of your fractal work - programs
  198. and/or images.
  199.  
  200. The program is in C and was compiled with Lattice C version 5.05.  It's
  201. taken me a long time to get it into shape, so your support would be
  202. appreciated.
  203.  
  204. Please report any bugs or suggestions so that they can be incorporated in
  205. future releases.   Please feel free to contact me on any Amiga programming
  206. topic.  I would, of course, be happy to receive any interesting images
  207. generated with this program.
  208.  
  209.          
  210. ***************************************************************************
  211.  
  212. Please Note:
  213.  
  214.    For the program to run you must have
  215.    
  216.       mathieeedoubbas.library
  217.       mathieeedountrans.library
  218.    
  219.    in the libs: directory.
  220.  
  221. The distribution disk also uses MuchMorePoPa by Fridtjof Siebert of AMOK
  222. and BootIntro by Roger Fischlin - the author is grateful to them for their
  223. PD work.
  224.  
  225. ***************************************************************************
  226.  
  227. How to start the program:
  228. ========================
  229.  
  230. either
  231.    From WorkBench click on the appropriate QMJ icon
  232.  
  233. or
  234.    From the CLI type either    qmj_pal    or     qmj_ntsc
  235.  
  236. and the program will start.
  237.  
  238. From WorkBench, if you have a previously saved QMJ image, click on the
  239. image icon and QMJ will automatically start up and then load the image.
  240.  
  241.  
  242. How to use the program:
  243. ======================
  244.  
  245. The program starts up with an introduction to itself and the control keys it
  246. uses; hit any key (except HELP) or a mouse button to move on.  Then the
  247. Mandelbrot Set (PAL or NTSC, depending on your system) will be displayed,
  248. unless you started the program from a project icon.
  249.  
  250. The program is now waiting further instructions from you. You can either
  251. load or draw an image at this stage or change some of the program's
  252. parameters.
  253.  
  254.  
  255.  
  256. The PROJECT menu
  257. ================
  258.  
  259. SAVE will save the current screen image (subject to its current dimensions)
  260. and all of the parameters for generating the image.  The image may be a
  261. standard IFF image or compressed according to the cmpByteRun1 run
  262. compression algorithm. (see Parameters)  The parameters are held in a
  263. special chunk named 'QMJD', this is not a recognised IFF chunk.  Other IFF
  264. readers should simply skip this chunk, if they are well written, so images
  265. should load into art programs etc.  An icon will also be saved for the
  266. image; this is a project icon and will allow the image to be loaded
  267. automatically by double-clicking on it.
  268. ** See File Requester below.
  269.  
  270. LOAD will ask for an ILBM (compressed or uncompressed) filename.  If the
  271. ILBM image was not generated directly by QJM, an error will be reported,
  272. although the image may still load.  This enables image 'processing' in
  273. DeluxePaint, for example, although you will need to re-type the image
  274. parameters (if you have a note of them) for them to be correct; this is
  275. because art programs and so on don't save the special parameter chunk. From
  276. version 5.0 an image can be loaded by clicking on its icon.  If a version
  277. 4.0 (or earlier) image has no icon, copy an icon .info file generated
  278. under version 5.0 (or later) or the icon from some other project file (but
  279. don't forget to change the default tool).  If the autoload of a project
  280. image fails, check the DEFAULT TOOL associated with the icon.
  281. ** See File Requester below.
  282.  
  283. CLEAR will clear the screen.
  284.  
  285. ABOUT gives a copyright notice.  The program is SHAREWARE, not public
  286. domain.  The author retains full copyright on source and executable code.
  287. The executable program must not be distributed without the full document-
  288. ation and copyright notices.
  289.  
  290. PRINT will provide a screen dump of the current image to the printer.  It
  291. will also print out the image's parameters.
  292.  
  293. QUIT takes you out of QMJ via a requester to check you haven't goofed.
  294.  
  295.  
  296.  
  297. The DRAW menu
  298. =============
  299.  
  300. DRAW starts drawing an image.  When the program is quiescent, waiting for a
  301. command, this will be the only option available on this menu.  When an
  302. image is being produced, the DRAW option will be disabled and PAUSE
  303. and STOP will be possibilities.
  304.  
  305. STOP halts the drawing of an image.  If you SAVE an image that has been
  306. STOPped before completion and then reload it, the DRAW command will continue
  307. the image at the start of the current line.  There may be a slight delay,
  308. if you have stopped and restarted an image in mid-line, while the program
  309. redraws the start of that line again.  This option is useful for producing
  310. lengthy images, when you might not wish to leave the computer on; simply
  311. save the image and continue it later.
  312.  
  313. PAUSE will halt the program, disabling all menu choices other than COLOUR
  314. (on the CHANGE menu) and DRAW.  When the program's drawing is paused, you may
  315. change the palette using COLOUR on the CHANGE menu.  To restart drawing
  316. select DRAW again; QMJ will pick up on the current image where it left off.
  317.  
  318.  
  319.  
  320. The CHANGE menu
  321. ===============
  322.  
  323. PARAMETERS calls up the program's control screen.  At the top the current
  324. function to be iterated is indicated.  Beneath it are the current
  325. parameters and their values.  To alter one of these, click in the text area
  326. and simply type in or edit the values.  The parameters available are:
  327. For Mandelbrots - the real & imaginary parts of c.
  328. For Complex Julias - the real and imaginary parts of z and c.
  329. For Quaternion Slices - the values a,b,c,d and qa,qb,qc,qd where
  330. Q=a+bi+cj+dk and q=qa+qbi+qcj+qdk; a and qa are real, all other parts are
  331. imaginary; i,j,k are vectors representing the square root of -1.
  332. Only the parameters required for the chosen function are available for
  333. input and editing, the others are ghosted out.  To move to the next
  334. parameter, simply hit return or click with the mouse on the chosen gadget.
  335. Beneath these mathematical parameters are the current screen dimensions (in
  336. pixels).  The maximum screen size is 640x246 on a PAL machine or 640x190
  337. on an NTSC screen.  (The other 10 pixels are used for the title area.)
  338. At the bottom, on the left, there is the number of iterations to be
  339. performed before membership of the Mandelbrot or Julia sets is assumed.
  340. Any point that is iterated this number of times without its size reaching 2
  341. will be coloured black on the screen.
  342. On the right are 4 gadgets.  At the top there is the gadget to specify the
  343. mode for colouring pixels.  The possibilities are 'modulo', 'nonlinear' and
  344. 'linear'.  Modulo shading means that when the function size reaches 2 for
  345. the point being iterated (ie. it doesn't reach the maximum number of
  346. iterations) the colour is determined by the number of iterations MOD 14
  347. (fourteen being the number of colours available).  Each colour can
  348. represent several numbers of iterations under this scheme and it is often
  349. possible to see the range of colours repeated within the image.  Linear
  350. implies an even, arithmetic spread of the 14 colours over the range up to
  351. the maximum number of iterations allowed.  Nonlinear will spread the colours
  352. in a geometric progression over the given range of iterations, so that
  353. colours are more finely allocated further from membership of the sets.
  354. The second gadget on the right selects the function to be iterated,
  355. MANDELBROT, complex JULIA or QUATERNION Julia slice.  The third gadget
  356. determines whether images will be saved compressed (in cmpByteRun1 run
  357. encoding) or uncompressed.  The final gadget RETURNs you to the main
  358. screen.
  359.  
  360. COLOUR will call the palette to allow editing of the colours the program
  361. uses for drawing.  There are 14 colours used for drawing (plus black, used
  362. to show membership of a set in the 'traditional' way) and any of them may
  363. be altered as desired using Proportional Gadgets for their RGB components.
  364. Simply drag the RGB sliders to the intensity  that you desire whilst
  365. watching the sample box displaying the current colour.  The 16th colour is
  366. white and is used for titles etc.  When you call up the parameters window,
  367. for example, QMJ will use false colours to make sure that you can read it.
  368.  
  369. FRAME allows the user to select part of an image to investigate in greater
  370. detail.  When you select FRAME you will be asked to click on the centre of
  371. the upper boundary of the new area.  When you have done this you'll be
  372. asked to click on the centre of the lower boundary.  The actual rectangle
  373. that you select will use these upper and lower bounds and the centre line
  374. you have indicated to produce an image appropriate to the current image
  375. proportions indicated on the parameter screen.  (Note that the centre
  376. position isthe average of the upper and lower x positions when you
  377. clicked the left mouse button.)  It's quite easy as the selection box will
  378. follow the mouse around, given the above constraints!  At present there is
  379. no graphical way to select an image larger than the current one, other than
  380. going to the parameter screen and manually altering the parameters.
  381.  
  382. SHOW TITLE will toggle between displaying the title-bar and hiding it.
  383. This can be useful when photographing the screen, for example.
  384.  
  385. RESTORE DATA restores the data (available in the 'parameters window') to
  386. its state at the last LOAD or DRAW.  This means that if you have an image
  387. loaded and make a mistake in framing, for example, you can get back to
  388. where you were before.  CLEAR leaves you with only your current data and no
  389. old data to go back to.  Generally this means that you can usually get back
  390. the parameters to suit the image on the screen.
  391.  
  392. LOAD PALETTE will load the colour settings from another image without
  393. loading the image itself.
  394.  
  395. FFFP / IEEE causes the program to change its maths precision.  The default
  396. is IEEE so the menu will offer you FFP; if you select this item the
  397. program will draw faster, but less accurately.  The menu wil show IEEE for
  398. the next selection; choose it again to return to double precision maths.
  399.  
  400. LOWRES/MEDRES selects the resolution of the drawing.  LowRes is almost 4
  401. times as fast as MedRes, as it plots 4 points per iteration ie. double
  402. points in both x & y directions.  It is useful to get a quick idea of how
  403. a plot will look. 
  404.  
  405. RESET ALL returns the program to its initial startup state, possibly
  406. including a default screen, depending on the version.
  407.  
  408.  
  409. ** File Requester
  410. Version 5.31a uses a different file requester from previous versions of QMJ.
  411. The display at LOAD or SAVE will consist of two windows.  On the left there
  412. are the normal gadgets to LOAD or SAVE, CANCEL or type in the path and file
  413. names required.  On the right there is a separate file list window showing
  414. ONLY the directories and files with a ".qmj" extension in the current
  415. directory.  To open a directory click ONCE on the directory name and it
  416. will be added to the path name on the left and its contents displayed.  To
  417. go back a level click on "<<PARENT" at the top of the screen.  Files can be
  418. selected in a similar way.  The requester will not lose its contents
  419. between LOADs and SAVEs (to save you time). It will detect a change of disk
  420. in the current drive if the requester is up.  If you need to refresh the
  421. display at any other time select "GET DIR".  (N.B. RAMB0: is the RAD: unit
  422. name under normal conditions.  If you want to change these use a binary
  423. file editor.  What? You don't have one?  Check out the PD libraries or
  424. contact me for a copy of AFEd - The Amiga File Editor.)
  425.  
  426.  
  427. ALL COMMANDS have alternate keyboard sequences:
  428. ==============================================
  429.  
  430. SAVE     Left-Amiga  &  S  or just     F5
  431. LOAD     Left-Amiga  &  L  or just     F6
  432. CLEAR    Left-Amiga  &  X  or just     F2
  433. ABOUT    Left-Amiga  &  A  or just     HELP
  434. PRINT    Left-Amiga  &  W
  435. QUIT     Left-Amiga  &  Q  or just     ESC
  436. DRAW     Left-Amiga  &  D
  437. STOP     Left-Amiga  &  .
  438. PAUSE    Left-Amiga  &  P
  439. PARAMETERS  Left-Amiga  &  Z  or just     F3
  440. COLOUR      Left-Amiga  &  C  or just     F4
  441. FRAME    Left-Amiga  &  F  or just     F1
  442. SHOW TITLE  Left-Amiga  &  T  or just     F10
  443. RESTORE DATA   Left-Amiga  &  U
  444. LOAD PALETTE   Left-Amiga  &  K  or just     F7
  445. FFP / IEEE  Left-Amiga  &  M  or just     F8
  446. LOWRES / MEDRES   Left-Amiga  &  O  or just     F9
  447. RESET ALL   Left-Amiga  &  R
  448.  
  449. Don't forget that AutoRequesters can be answered positively with
  450. Left-Amiga V and negatively with Right-Amiga B.
  451.  
  452.  
  453. I hope you enjoy using the program.
  454.  
  455.  
  456.                           Chris Baxter       October 1992,  Bilbao
  457.  
  458.  
  459.  
  460.  
  461.